// 响应式storage
import type { App } from "vue";
import Storage from "responsive-storage";
import { routerArrays } from "@/layout/types";
import { responsiveStorageNameSpace } from "@/config";

export const injectResponsiveStorage = (app: App, config: PlatformConfigs) => {
  const nameSpace = responsiveStorageNameSpace();
  const configObj = Object.assign(
    {
      // layout模式以及主题
      layout: {
        layout: config.Layout,
        theme: config.Theme,
        darkMode:
          Storage.getData("layout", nameSpace)?.darkMode ?? config.DarkMode,
        sidebarStatus: config.SidebarStatus,
        epThemeColor: config.EpThemeColor,
        themeColor: config.Theme, // 主题色（对应系统配置中的主题色，与theme不同的是它不会受到浅色、深色整体风格切换的影响，只会在手动点击主题色时改变）
        overallStyle: config.OverallStyle // 整体风格（浅色：light、深色：dark、自动：system）
      },
      // 系统配置-界面显示
      configure: {
        grey: config.Grey,
        weak: config.Weak,
        hideTabs: config.HideTabs,
        hideFooter: config.HideFooter,
        showLogo: config.ShowLogo,
        showModel: config.ShowModel,
        multiTagsCache: config.MultiTagsCache,
        stretch: config.Stretch
      }
    },
    config.MultiTagsCache
      ? {
          // 默认显示顶级菜单tag
          tags: Storage.getData("tags", nameSpace) ?? routerArrays
        }
      : {}
  );

  app.use(Storage, { nameSpace, memory: configObj });
};
